home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / lib / perl / 5.10.0 / IO / Socket / UNIX.pm < prev   
Encoding:
Perl POD Document  |  2009-06-26  |  1.3 KB  |  69 lines

  1. # IO::Socket::UNIX.pm
  2. #
  3. # Copyright (c) 1997-8 Graham Barr <gbarr@pobox.com>. All rights reserved.
  4. # This program is free software; you can redistribute it and/or
  5. # modify it under the same terms as Perl itself.
  6.  
  7. package IO::Socket::UNIX;
  8.  
  9. use strict;
  10. our(@ISA, $VERSION);
  11. use IO::Socket;
  12. use Carp;
  13.  
  14. @ISA = qw(IO::Socket);
  15. $VERSION = "1.23";
  16. $VERSION = eval $VERSION;
  17.  
  18. IO::Socket::UNIX->register_domain( AF_UNIX );
  19.  
  20. sub new {
  21.     my $class = shift;
  22.     unshift(@_, "Peer") if @_ == 1;
  23.     return $class->SUPER::new(@_);
  24. }
  25.  
  26. sub configure {
  27.     my($sock,$arg) = @_;
  28.     my($bport,$cport);
  29.  
  30.     my $type = $arg->{Type} || SOCK_STREAM;
  31.  
  32.     $sock->socket(AF_UNIX, $type, 0) or
  33.     return undef;
  34.  
  35.     if(exists $arg->{Local}) {
  36.     my $addr = sockaddr_un($arg->{Local});
  37.     $sock->bind($addr) or
  38.         return undef;
  39.     }
  40.     if(exists $arg->{Listen} && $type != SOCK_DGRAM) {
  41.     $sock->listen($arg->{Listen} || 5) or
  42.         return undef;
  43.     }
  44.     elsif(exists $arg->{Peer}) {
  45.     my $addr = sockaddr_un($arg->{Peer});
  46.     $sock->connect($addr) or
  47.         return undef;
  48.     }
  49.  
  50.     $sock;
  51. }
  52.  
  53. sub hostpath {
  54.     @_ == 1 or croak 'usage: $sock->hostpath()';
  55.     my $n = $_[0]->sockname || return undef;
  56.     (sockaddr_un($n))[0];
  57. }
  58.  
  59. sub peerpath {
  60.     @_ == 1 or croak 'usage: $sock->peerpath()';
  61.     my $n = $_[0]->peername || return undef;
  62.     (sockaddr_un($n))[0];
  63. }
  64.  
  65. 1; # Keep require happy
  66.  
  67. __END__
  68.  
  69.